import 'dart:convert';

// 函数：将JSON字符串转换为OrderModel对象
OrderModel orderModelFromJson(String str) =>
    OrderModel.fromJson(json.decode(str));

// 函数：将OrderModel对象转换为JSON字符串
String orderModelToJson(OrderModel data) => json.encode(data.toJson());

// OrderModel类，表示订单模型
class OrderModel {
  bool success; // 订单是否成功
  String message; // 订单消息
  List<Result> result; // 订单结果列表

  // 构造函数
  OrderModel({
    required this.success, // 是否成功
    required this.message, // 消息
    required this.result, // 结果列表
  });

  // 工厂方法：从JSON创建OrderModel对象
  factory OrderModel.fromJson(Map<String, dynamic> json) => OrderModel(
        success: json["success"], // 从JSON中获取成功状态
        message: json["message"], // 从JSON中获取消息
        result: List<Result>.from(
            json["result"].map((x) => Result.fromJson(x))), // 从JSON中获取结果列表
      );

  // 方法：将OrderModel对象转换为JSON
  Map<String, dynamic> toJson() => {
        "success": success, // 将成功状态转换为JSON
        "message": message, // 将消息转换为JSON
        "result":
            List<dynamic>.from(result.map((x) => x.toJson())), // 将结果列表转换为JSON
      };
}

// Result类，表示订单结果
class Result {
  String id; // 订单ID
  String uid; // 用户ID
  String name; // 姓名
  String phone; // 电话
  String address; // 地址
  String allPrice; // 总价
  int payStatus; // 支付状态
  int orderStatus; // 订单状态
  List<OrderItem> orderItem; // 订单项列表

  // 构造函数
  Result({
    required this.id, // 订单ID
    required this.uid, // 用户ID
    required this.name, // 姓名
    required this.phone, // 电话
    required this.address, // 地址
    required this.allPrice, // 总价
    required this.payStatus, // 支付状态
    required this.orderStatus, // 订单状态
    required this.orderItem, // 订单项列表
  });

  // 工厂方法：从JSON创建Result对象
  factory Result.fromJson(Map<String, dynamic> json) => Result(
        id: json["_id"], // 从JSON中获取订单ID
        uid: json["uid"], // 从JSON中获取用户ID
        name: json["name"], // 从JSON中获取姓名
        phone: json["phone"], // 从JSON中获取电话
        address: json["address"], // 从JSON中获取地址
        allPrice: json["all_price"], // 从JSON中获取总价
        payStatus: json["pay_status"], // 从JSON中获取支付状态
        orderStatus: json["order_status"], // 从JSON中获取订单状态
        orderItem: List<OrderItem>.from(json["order_item"]
            .map((x) => OrderItem.fromJson(x))), // 从JSON中获取订单项列表
      );

  // 方法：将Result对象转换为JSON
  Map<String, dynamic> toJson() => {
        "_id": id, // 将订单ID转换为JSON
        "uid": uid, // 将用户ID转换为JSON
        "name": name, // 将姓名转换为JSON
        "phone": phone, // 将电话转换为JSON
        "address": address, // 将地址转换为JSON
        "all_price": allPrice, // 将总价转换为JSON
        "pay_status": payStatus, // 将支付状态转换为JSON
        "order_status": orderStatus, // 将订单状态转换为JSON
        "order_item": List<dynamic>.from(
            orderItem.map((x) => x.toJson())), // 将订单项列表转换为JSON
      };
}

// OrderItem类，表示订单项
class OrderItem {
  String id; // 订单项ID
  String orderId; // 订单ID
  String productTitle; // 产品标题
  String productId; // 产品ID
  int productPrice; // 产品价格
  String productImg; // 产品图片
  int productCount; // 产品数量
  String selectedAttr; // 选中的属性
  int addTime; // 添加时间

  // 构造函数
  OrderItem({
    required this.id, // 订单项ID
    required this.orderId, // 订单ID
    required this.productTitle, // 产品标题
    required this.productId, // 产品ID
    required this.productPrice, // 产品价格
    required this.productImg, // 产品图片
    required this.productCount, // 产品数量
    required this.selectedAttr, // 选中的属性
    required this.addTime, // 添加时间
  });

  // 工厂方法：从JSON创建OrderItem对象
  factory OrderItem.fromJson(Map<String, dynamic> json) => OrderItem(
        id: json["_id"], // 从JSON中获取订单项ID
        orderId: json["order_id"], // 从JSON中获取订单ID
        productTitle: json["product_title"], // 从JSON中获取产品标题
        productId: json["product_id"], // 从JSON中获取产品ID
        productPrice: json["product_price"], // 从JSON中获取产品价格
        productImg: json["product_img"], // 从JSON中获取产品图片
        productCount: json["product_count"], // 从JSON中获取产品数量
        selectedAttr: json["selected_attr"], // 从JSON中获取选中的属性
        addTime: json["add_time"], // 从JSON中获取添加时间
      );

  // 方法：将OrderItem对象转换为JSON
  Map<String, dynamic> toJson() => {
        "_id": id, // 将订单项ID转换为JSON
        "order_id": orderId, // 将订单ID转换为JSON
        "product_title": productTitle, // 将产品标题转换为JSON
        "product_id": productId, // 将产品ID转换为JSON
        "product_price": productPrice, // 将产品价格转换为JSON
        "product_img": productImg, // 将产品图片转换为JSON
        "product_count": productCount, // 将产品数量转换为JSON
        "selected_attr": selectedAttr, // 将选中的属性转换为JSON
        "add_time": addTime, // 将添加时间转换为JSON
      };
}
